package com.dylearn.serve.impl.rabbitmq.config;

import org.springframework.amqp.core.*;
import org.springframework.context.annotation.Bean;

/**
 * 这个是 rabbitmq 的交换机
 */
//@Configuration
public class RabbitMqConfig {

    @Bean
    public Queue directQueue() {
        //这里是创建一个消息队列  后面还有三个值 是否持久化 是否专用 是否删除
        return new Queue("direct_queue");
    }

    @Bean
    public DirectExchange directExchange() {
        //这个是声明一个交换机
        return new DirectExchange("directExchange");
    }

    @Bean
    public Binding bindingDirect() {
        //这个用于 绑定 消息队列 和 交换机 ，顺便起一个名称 direct
        return BindingBuilder.bind(directQueue()).to(directExchange()).with("direct");
    }

    //----------------------------------
    //下面的是 topic
    @Bean
    public Queue topicQueue() {
        //这里是创建一个消息队列  后面还有三个值 是否持久化 是否专用 是否删除
        return new Queue("topic_queue");
    }

    @Bean
    public Queue topicQueue2() {
        //这里是创建一个消息队列  后面还有三个值 是否持久化 是否专用 是否删除
        return new Queue("topic_queue2");
    }

    @Bean
    public TopicExchange topicExchange() {
        //这个是声明一个交换机
        return new TopicExchange("topicExchange");
    }

    @Bean
    public Binding bindingTopic() {
        //这个用于 绑定 消息队列 和 交换机 ，顺便起一个名称 direct                注意 这里有匹配 * 这个表示单个任意
        return BindingBuilder.bind(topicQueue()).to(topicExchange()).with("topic.*.id");
    }

    @Bean
    public Binding bindingTopic2() {
        //这个用于 绑定 消息队列 和 交换机 ，顺便起一个名称 direct                     这里有匹配 # 这个表示任意
        return BindingBuilder.bind(topicQueue2()).to(topicExchange()).with("topic2.#");
    }


}
